0927. 三等分【困难】
1. 📝 题目描述
给定一个由 0 和 1 组成的数组 d arrd,将数组分成 d 3d 个非空的部分,使得所有这些部分表示相同的二进制值。
如果可以做到,请返回任何 d [i, j],其中 i+1 < j,这样一来:
arr[0], arr[1], ..., arr[i]d 为第一部分;arr[i + 1], arr[i + 2], ..., arr[j - 1]d 为第二部分;arr[j], arr[j + 1], ..., arr[arr.length - 1]d 为第三部分。- 这三个部分所表示的二进制值相等。
如果无法做到,就返回 d [-1, -1]。
注意,在考虑每个部分所表示的二进制时,应当将其看作一个整体。例如,[1,1,0]d 表示十进制中的 d 6,而不会是 d 3。此外,前导零也是 被允许 的,所以 d [0,1,1] 和 d [1,1]d 表示相同的值。
示例 1:
txt
输入:arr = [1,0,1,0,1]
输出:[0,3]1
2
2
示例 2:
txt
输入:arr = [1,1,0,1,1]
输出:[-1,-1]1
2
2
示例 3:
txt
输入:arr = [1,1,0,0,1]
输出:[0,2]1
2
2
提示:
3 <= arr.length <= 3 * 10^4arr[i]d 是 d0d 或 d1
2. 🎯 s.1 - 解法 1
js
// todo1
- 时间复杂度:
- 空间复杂度: